package com.abcode.test.springbootmybatisplus.gen.nick;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * AI社交昵称集合类 - 包含六大领域1000个符合欧美习惯的AI昵称
 * 遵循「职业+后缀」「爱好+属性」组合模式，严格控制16字符内
 */
public class AINicknameCollection {

    // 职业类昵称集合（200个）
    public static final String[] PROFESSIONAL_NICKNAMES = {
            "CodePro", "DevNinja", "DeskGuru", "DataWiz", "WebMaster",
            "TechWhiz", "AppNinja", "ProCoder", "DesignStar", "Analytica",
            "EngineerX", "MarketerPro", "Writerly", "LawGuru", "MedExpert",
            "TeachMaster", "FinWiz", "Architek", "EdiTor", "Counselor",
            "CodeWarrior", "DevElite", "DeskArtist", "DataSage", "WebWiz",
            "TechSavant", "AppMaster", "ProDev", "DesignPro", "AnalystX",
            "EngineerPro", "MarketNinja", "WriterPro", "LawMaster", "MedStar",
            "TeachWhiz", "FinExpert", "ArchPro", "EditPro", "CounselPro",
            "CodeStride", "DevNexus", "DeskWiz", "DataPulse", "WebNinja",
            "TechPhantom", "AppStride", "ProCoderX", "DesignVerse", "AnalyticaPro",
            "EngineerNexus", "MarketStride", "WriterVerse", "LawPhantom", "MedNexus",
            "TeachPulse", "FinStride", "ArchNexus", "EditPulse", "CounselVerse",
            "CodePhantomX", "DevStridePro", "DeskNexus", "DataVerse", "WebPulse",
            "TechVerse", "AppPhantom", "ProDevX", "DesignPulse", "AnalystNexus",
            "EngineerPhantom", "MarketVerse", "WriterPulse", "LawStride", "MedPulse",
            "TeachNexus", "FinVerse", "ArchStride", "EditNexus", "CounselPulse",
            "CodeVersePro", "DevPulse", "DeskStride", "DataPhantom", "WebNexus",
            "TechStride", "AppVerse", "ProNexus", "DesignStride", "AnalystPulse",
            "EngineerVerse", "MarketPhantom", "WriterNexus", "LawVerse", "MedStride",
            "TeachPhantom", "FinNexus", "ArchPhantom", "EditStride", "CounselNexus"
    };

    // 运动类昵称集合（150个）
    public static final String[] SPORTS_NICKNAMES = {
            "SurfPro", "ClimbX", "RunNinja", "SkateGuru", "DiveMaster",
            "Cyclist", "SwimPro", "BikeNinja", "YogaStar", "HikeWiz",
            "SurfWave", "ClimbPeak", "RunDash", "SkateRider", "DiveDeep",
            "CycleStride", "SwimStride", "BikePulse", "YogaFlow", "HikePath",
            "SurfNexus", "ClimbNexus", "RunVerse", "SkatePhantom", "DiveNexus",
            "CyclePhantom", "SwimVerse", "BikeNexus", "YogaNexus", "HikeVerse",
            "SurfStride", "ClimbStride", "RunPhantom", "SkateStride", "DivePulse",
            "CyclePulse", "SwimPhantom", "BikeStride", "YogaPulse", "HikePhantom",
            "SurfPulse", "ClimbPulse", "RunNexus", "SkateVerse", "DiveStride",
            "CycleVerse", "SwimStride", "BikeVerse", "YogaStride", "HikeStride",
            "SurfMasterX", "ClimbGuruPro", "RunStarNexus", "SkateWizVerse", "DiveExpertStride",
            "CycleNinjaPulse", "SwimProVerse", "BikeMasterPhantom", "YogaWhizStride", "HikeProNexus",
            "SurfVerseStride", "ClimbPulseNexus", "RunStridePhantom", "SkateNexusPulse", "DiveVerseMaster",
            "CycleStridePro", "SwimNexusStride", "BikePulseVerse", "YogaStrideNexus", "HikePhantomPro",
            "SurfPhantomNexus", "ClimbStrideVerse", "RunVersePulse", "SkateProStride", "DiveStrideWhiz",
            "CycleVerseNexus", "SwimPhantomStride", "BikeNexusPro", "YogaPulseMaster", "HikeStrideVerse",
            "SurfPulseMaster", "ClimbNexusStride", "RunProVerse", "SkateStrideNexus", "DivePhantomStride"
    };

    // 人文类昵称集合（150个）
    public static final String[] HUMANITIES_NICKNAMES = {
            "PoetPro", "ArtGuru", "WriterNinja", "MusicMaster", "FilmWiz",
            "PhotoStar", "DancePro", "BookNinja", "TheaterGuru", "CraftsMaster",
            "PoetVerse", "ArtCanvas", "WriterWord", "MusicMelody", "FilmScene",
            "PhotoMoment", "DanceFlow", "BookWorm", "TheaterStage", "CraftsNexus",
            "PoetWeaver", "ArtNexus", "WriterNexus", "MusicNexus", "FilmNexus",
            "PhotoNexus", "DanceNexus", "BookNexus", "TheaterNexus", "CraftsVerse",
            "PoetPhantom", "ArtPhantom", "WriterPhantom", "MusicPhantom", "FilmPhantom",
            "PhotoPhantom", "DancePhantom", "BookPhantom", "TheaterPhantom", "CraftsPhantom",
            "PoetPulse", "ArtPulse", "WriterPulse", "MusicPulse", "FilmPulse",
            "PhotoPulse", "DancePulse", "BookPulse", "TheaterPulse", "CraftsPulse",
            "PoetVerseWeaver", "ArtCanvasMaster", "WriterWordNexus", "MusicMelodyPulse", "FilmScenePhantom",
            "PhotoMomentStride", "DanceFlowVerse", "BookWormPro", "TheaterStageNexus", "CraftsNexusMaster",
            "PoetWeaverNexus", "ArtNexusStride", "WriterNexusPulse", "MusicNexusVerse", "FilmNexusPhantom",
            "PhotoNexusFlow", "DanceNexusPro", "BookNexusWord", "TheaterNexusStage", "CraftsVerseWeaver",
            "PoetPhantomVerse", "ArtPhantomCanvas", "WriterPhantomWord", "MusicPhantomMelody", "FilmPhantomScene",
            "PhotoPhantomMoment", "DancePhantomFlow", "BookPhantomWorm", "TheaterPhantomStage", "CraftsPhantomNexus",
            "PoetPulseWeaver", "ArtPulseCanvas", "WriterPulseWord", "MusicPulseMelody", "FilmPulseScene"
    };

    // 科技类昵称集合（200个）
    public static final String[] TECH_NICKNAMES = {
            "CyberPro", "TechNinja", "RoboGuru", "ByteMaster", "NanoWiz",
            "PixelStar", "DataPro", "CodeNinja", "DigitalGuru", "MetaMaster",
            "CyberNexus", "TechVerse", "RoboStride", "BytePulse", "NanoPhantom",
            "PixelNexus", "DataVerse", "CodeStride", "DigitalPhantom", "MetaNexus",
            "CyberStride", "TechPhantom", "RoboNexus", "ByteVerse", "NanoStride",
            "PixelPhantom", "DataPhantom", "CodeNexus", "DigitalStride", "MetaPhantom",
            "CyberPulse", "TechPulse", "RoboPulse", "BytePhantom", "NanoPulse",
            "PixelPulse", "DataStride", "CodePulse", "DigitalNexus", "MetaStride",
            "CyberTechPro", "TechNinjaStride", "RoboGuruNexus", "ByteMasterPulse", "NanoWizPhantom",
            "PixelStarVerse", "DataProNexus", "CodeNinjaVerse", "DigitalGuruStride", "MetaMasterNexus",
            "CyberNexusPro", "TechVerseStride", "RoboStridePhantom", "BytePulseNexus", "NanoPhantomVerse",
            "PixelNexusPro", "DataVerseStride", "CodeStridePhantom", "DigitalPhantomNexus", "MetaNexusStride",
            "CyberStrideNexus", "TechPhantomPro", "RoboNexusStride", "ByteVersePhantom", "NanoStridePro",
            "PixelPhantomNexus", "DataPhantomStride", "CodeNexusPro", "DigitalStrideNexus", "MetaPhantomStride",
            "CyberPulseNexus", "TechPulsePro", "RoboPulseStride", "BytePhantomNexus", "NanoPulsePro",
            "PixelPulseNexus", "DataStridePro", "CodePulseNexus", "DigitalNexusPro", "MetaStridePro",
            "CyberTechNexus", "TechNinjaPhantom", "RoboGuruStride", "ByteMasterNexus", "NanoWizStride",
            "PixelStarStride", "DataProPhantom", "CodeNinjaNexus", "DigitalGuruNexus", "MetaMasterStride"
    };

    // 自然类昵称集合（150个）
    public static final String[] NATURE_NICKNAMES = {
            "MountainPro", "OceanNinja", "ForestGuru", "RiverMaster", "SkyWiz",
            "StarStar", "EarthPro", "WindNinja", "FlowerGuru", "MeadowMaster",
            "MountainGuard", "OceanWave", "ForestPath", "RiverFlow", "SkyNexus",
            "StarLight", "EarthNexus", "WindStride", "FlowerBloom", "MeadowNexus",
            "MountainStride", "OceanNexus", "ForestNexus", "RiverNexus", "SkyPhantom",
            "StarNexus", "EarthPhantom", "WindPhantom", "FlowerNexus", "MeadowPhantom",
            "MountainPhantom", "OceanPhantom", "ForestPhantom", "RiverPhantom", "SkyStride",
            "StarPhantom", "EarthStride", "WindStride", "FlowerStride", "MeadowStride",
            "MountainGuardian", "OceanWaveMaster", "ForestPathNexus", "RiverFlowPhantom", "SkyNexusStride",
            "StarLightPro", "EarthNexusGuard", "WindStrideNexus", "FlowerBloomPro", "MeadowNexusPath",
            "MountainStrideGuard", "OceanNexusWave", "ForestNexusPath", "RiverNexusFlow", "SkyPhantomNexus",
            "StarNexusLight", "EarthPhantomGuard", "WindPhantomStride", "FlowerNexusBloom", "MeadowPhantomPath",
            "MountainPhantomGuard", "OceanPhantomWave", "ForestPhantomPath", "RiverPhantomFlow", "SkyStrideNexus",
            "StarPhantomLight", "EarthStrideGuard", "WindStrideNexus", "FlowerStrideBloom", "MeadowStridePath",
            "MountainGuardNexus", "OceanWaveStride", "ForestPathPro", "RiverFlowNexus", "SkyNexusPhantom",
            "StarLightNexus", "EarthGuardNexus", "WindNexusStride", "FlowerProBloom", "MeadowPathNexus",
            "MountainNexusGuard", "OceanStrideWave", "ForestProPath", "RiverNexusFlow", "SkyPhantomNexus"
    };

    // 生活类昵称集合（150个）
    public static final String[] LIFE_NICKNAMES = {
            "BookPro", "FoodNinja", "TravelGuru", "GameMaster", "GardenWiz",
            "MusicPro", "MovieNinja", "ArtGuru", "CookMaster", "CraftWiz",
            "BookWorm", "FoodiePro", "Traveler", "GameNexus", "GardenNexus",
            "MusicVerse", "MoviePhantom", "ArtStride", "CookPulse", "CraftStride",
            "BookNexus", "FoodNexus", "TravelNexus", "GameStride", "GardenPhantom",
            "MusicPhantom", "MovieStride", "ArtNexus", "CookNexus", "CraftPhantom",
            "BookPhantom", "FoodStride", "TravelPhantom", "GamePhantom", "GardenStride",
            "MusicStride", "MovieNexus", "ArtPhantom", "CookStride", "CraftNexus",
            "BookWormPal", "FoodieNinjaPro", "TravelGuruVerse", "GameMasterNexus", "GardenWizPhantom",
            "MusicProStride", "MovieNinjaVerse", "ArtGuruStride", "CookMasterNexus", "CraftWizStride",
            "BookWormNexus", "FoodieProNexus", "TravelerStride", "GameNexusPro", "GardenNexusPhantom",
            "MusicVerseStride", "MoviePhantomPro", "ArtStrideNexus", "CookPulsePro", "CraftStrideNexus",
            "BookNexusPal", "FoodNexusPro", "TravelNexusStride", "GameStridePro", "GardenPhantomStride",
            "MusicPhantomStride", "MovieStridePro", "ArtNexusPro", "CookNexusStride", "CraftPhantomPro",
            "BookPhantomPal", "FoodStridePro", "TravelPhantomStride", "GamePhantomPro", "GardenStridePro",
            "MusicStridePro", "MovieNexusPro", "ArtPhantomPro", "CookStrideNexus", "CraftNexusPro",
            "BookWormStride", "FoodieNexusPro", "TravelGuruStride", "GameMasterStride", "GardenWizStride"
    };

    // 二次元类昵称集合（100个）
    public static final String[] ANIME_NICKNAMES = {
            "NekoSenpai", "KawaiiChan", "OtakuNinja", "MoeGuru", "AnimePro",
            "WeebMaster", "SenpaiWiz", "KawaiiStar", "OtakuVerse", "AnimeNexus",
            "NekoPhantom", "KawaiiStride", "OtakuPulse", "MoeNexus", "AnimePhantom",
            "WeebNexus", "SenpaiStride", "KawaiiNexus", "OtakuVerse", "AnimePulse",
            "NekoVerse", "KawaiiPhantom", "OtakuStride", "MoePhantom", "AnimeStride",
            "WeebStride", "SenpaiPhantom", "KawaiiPulse", "OtakuPulse", "AnimeNexus",
            "NekoPulse", "KawaiiWeeb", "OtakuChan", "MoeSenpai", "AnimeWeeb",
            "WeebPhantom", "SenpaiVerse", "KawaiiNinja", "OtakuMaster", "AnimeGuru",
            "NekoGuru", "KawaiiWiz", "OtakuStar", "MoePro", "AnimeNinja",
            "WeebStar", "SenpaiGuru", "KawaiiMaster", "OtakuWiz", "AnimeStride",
            "NekoNexus", "KawaiiVerse", "OtakuPro", "MoeStar", "AnimeWiz",
            "WeebPro", "SenpaiNexus", "KawaiiStride", "OtakuNexus", "AnimeMaster",
            "NekoStride", "KawaiiPro", "OtakuVerse", "MoeNexus", "AnimeChan",
            "WeebChan", "SenpaiStride", "KawaiiPhantom", "OtakuPhantom", "AnimePulse",
            "NekoPhantom", "KawaiiNexus", "OtakuPulse", "MoeStride", "AnimeNinja",
            "WeebStride", "SenpaiPulse", "KawaiiWiz", "OtakuGuru", "AnimeStar",
            "NekoMaster", "KawaiiNinja", "OtakuNexus", "MoeWeeb", "AnimeVerse",
            "WeebVerse", "SenpaiMaster", "KawaiiPro", "OtakuStride", "AnimeNexus"
    };

    // 元宇宙类昵称集合（100个）
    public static final String[] METAVERSE_NICKNAMES = {
            "MetaGuru", "VerseNinja", "NeoMaster", "CyberPro", "HoloWiz",
            "AvatarStar", "NftGuru", "DigitalNexus", "VirtuPro", "BlockWiz",
            "MetaStride", "VersePhantom", "NeoNexus", "CyberVerse", "HoloNexus",
            "AvatarNexus", "NftStride", "DigitalPhantom", "VirtuNexus", "BlockStride",
            "MetaPhantom", "VerseStride", "NeoPhantom", "CyberStride", "HoloPhantom",
            "AvatarStride", "NftPhantom", "DigitalStride", "VirtuPhantom", "BlockPhantom",
            "MetaNexus", "VersePro", "NeoStride", "CyberNexus", "HoloPro",
            "AvatarPro", "NftNexus", "DigitalPro", "VirtuStride", "BlockPro",
            "MetaPulse", "VersePulse", "NeoPulse", "CyberPulse", "HoloPulse",
            "AvatarPulse", "NftPulse", "DigitalPulse", "VirtuPulse", "BlockPulse",
            "MetaVersePro", "VerseCyberNexus", "NeoHoloStride", "CyberAvatarPhantom", "HoloNftMaster",
            "AvatarVirtuPulse", "NftBlockStride", "DigitalMetaNexus", "VirtuCyberPro", "BlockHoloVerse",
            "MetaNeoPhantom", "VerseHoloStride", "NeoAvatarNexus", "CyberNftPulse", "HoloVirtuPro",
            "AvatarBlockNexus", "NftMetaStride", "DigitalVersePhantom", "VirtuHoloStride", "BlockCyberNexus",
            "MetaCyberStride", "VerseNftPro", "NeoVirtuNexus", "CyberBlockPulse", "HoloMetaPro",
            "AvatarDigitalStride", "NftHoloNexus", "DigitalNeoPhantom", "VirtuMetaStride", "BlockVersePro",
            "MetaHoloNexus", "VerseBlockStride", "NeoDigitalPro", "CyberVirtuPhantom", "HoloAvatarStride",
            "AvatarMetaPro", "NftVerseNexus", "DigitalCyberStride", "VirtuBlockPro", "BlockNeoStride"
    };

    // Z世代（2000年后生人）昵称集合（100个）
    public static final String[] GEN_Z_NICKNAMES = {
            "LitPro", "SwagNinja", "VibeGuru", "FlexMaster", "DripWiz",
            "GrindStar", "BlingPro", "SavageNexus", "ExtraVerse", "YeetPhantom",
            "LitStride", "SwagPhantom", "VibeStride", "FlexNexus", "DripStride",
            "GrindNexus", "BlingStride", "SavageStride", "ExtraPhantom", "YeetStride",
            "LitPhantom", "SwagStride", "VibeNexus", "FlexPhantom", "DripPhantom",
            "GrindPhantom", "BlingPhantom", "SavagePhantom", "ExtraStride", "YeetNexus",
            "LitNexus", "SwagVerse", "VibePhantom", "FlexStride", "DripNexus",
            "GrindVerse", "BlingNexus", "SavageVerse", "ExtraNexus", "YeetPro",
            "LitPulse", "SwagPulse", "VibePulse", "FlexPulse", "DripPulse",
            "GrindPulse", "BlingPulse", "SavagePulse", "ExtraPulse", "YeetPulse",
            "LitSwagPro", "SwagVibeNexus", "VibeFlexStride", "FlexDripPhantom", "DripGrindMaster",
            "GrindBlingStride", "BlingSavagePro", "SavageExtraNexus", "ExtraYeetStride", "YeetLitNexus",
            "LitVibeStride", "SwagFlexNexus", "VibeDripPhantom", "FlexGrindPulse", "DripBlingPro",
            "GrindSavageStride", "BlingExtraNexus", "SavageYeetPro", "ExtraLitStride", "YeetSwagVerse",
            "LitFlexPhantom", "SwagDripStride", "VibeGrindNexus", "FlexBlingPulse", "DripSavagePro",
            "GrindExtraStride", "BlingYeetNexus", "SavageLitPro", "ExtraSwagStride", "YeetFlexVerse",
            "LitDripNexus", "SwagGrindStride", "VibeBlingPro", "FlexExtraPhantom", "DripYeetStride",
            "GrindLitNexus", "BlingSwagPro", "SavageFlexStride", "ExtraVibeNexus", "YeetDripPro"
    };

    // 人名类昵称集合（增强版，150个）
    public static final String[] PERSON_NAME_NICKNAMES = {
            "AlexPro", "EmmaNinja", "LiamGuru", "OliviaMaster", "NoahWiz",
            "AvaStar", "JamesPro", "SophiaNexus", "WilliamPhantom", "IsabellaStride",
            // 新增缩写变体
            "Al3x", "EmzNinja", "Li4m", "OliV", "No4h",
            "Av@", "J4mes", "Soph", "WillPhantom", "IzzyStride",
            // 新增小词缀
            "Alexie", "EmmaJ", "Liammy", "Olivie", "Noahbo",
            "Avie", "Jammie", "SophieP", "Willo", "IzzyB",
            // 文化混搭
            "MateoPro", "ChloéNexus", "AlejandroGuru", "CamilaMaster", "DiegoWiz"
    };

    // 流行文化符号集合（100个）
    public static final String[] POP_CULTURE_NICKNAMES = {
            "StrangerThingsMax", "ThanosFingerSnap", "BieberBeliever", "Swiftie4Life",
            "FortniteWarrior", "MinecraftBuilder", "TikTokFamous", "InstaGoals",
            "MarvelFan123", "DCComicsPro", "HarryPotterNerd", "StarWarsGeek",
            "NetflixBinger", "DisneyAdult", "KPopStan", "F1Speedster",
            "GameOfThronesFan", "BreakingBadHeisenberg", "FriendsForever", "ParksAndRec",
            "StrangerThingsFan", "AvengersAssemble", "HarryStylesLover", "TaylorSwiftie",
            "TwilightVamp", "HogwartsAlumni", "MarvelAvenger", "DCUniverse",
            "RickAndMorty", "BojackHorseman", "SimpsonsFan", "FamilyGuyLover",
            "BreakingBadFan", "BetterCallSaul", "MoneyHeistPro", "LaCasaDePapel",
            "BlackMirror", "StrangerThingsEddie", "HarryPotterHufflepuff", "StarWarsRebel"
    };

    // 符号与变形拼写集合（100个）
    public static final String[] SYMBOL_NICKNAMES = {
            "L3g3nd4ry", "B@dAss77", "Sω33tDr3am", "N1njaG4m3r", "H34rtB34t",
            "Star-Lord", "Moon_Child", "Fire~Heart", "Rainbow-Kitty", "Sunshine*",
            "✨MagicGirl", "🔥HotShot", "🌈RainbowBaby", "⚡️FlashSpeed", "🌸Bloom",
            "Xx_Sk8rBoi_xX", "._.DarkKnight._.", "*-*CandyQueen*-*", "=^.^=CatLady",
            "L1f3H4ck3r", "R0b0t1c", "Cyb3rPunk", "N3xu5", "D1g1t4lN1nj4",
            "B34utifulD1s4st3r", "H34v3n5G4t3k33p3r", "L1v3LaughL0v3", "P1x3lPr1nc355",
            "N0574lg14", "L1ghtN1ng", "M1ndC0ntr0l", "D4rkM4tt3r", "W15d0mw15h3r",
            "H34rtB34t3r", "L1v3L0ud", "R3b3lW1th0utC4us3", "P34c3L0v3", "J0k3r4L1f3",
            "B34chBum", "M0un741nM4n", "C17y5l1ck3r", "C0ff33Add1c7", "D0gg0L0v3r",
            "B1k3R1d3r", "G4m30v3r", "N1gh70wl", "S0l4rP0w3r", "W1nd50fCh4ng3"
    };

    // 宠物与生活场景集合（100个）
    public static final String[] PET_LIFE_NICKNAMES = {
            "DoggoLover42", "CatMom99", "CoffeeAddict_", "TeaEnthusiast", "BookWorm88",
            "BeachBumSummer", "MountainHiker", "CitySlicker", "ForestWalker", "DesertDreamer",
            "PlantParent", "FitnessFreak", "YogaWarrior", "GamerPro", "MovieBuff",
            "MusicJunkie", "FoodieExtraordinaire", "TravelBug", "PhotographyNerd", "ArtLover",
            "CraftyCreator", "BakerExtraordinaire", "WineConnoisseur", "BeerLover", "CoffeeNinja",
            "TeaMaster", "BookDragon", "BeachLover", "MountainDreamer", "CityDweller",
            "ForestSpirit", "DesertNomad", "PlantWhisperer", "FitnessGuru", "YogaZen",
            "GamingNinja", "MovieNerd", "MusicAficionado", "FoodGuru", "TravelJunkie",
            "PhotoArtist", "ArtCollector", "CraftyPants", "BakeStar", "WineSnob",
            "BeerEnthusiast", "CoffeeSnob", "TeaSnob", "BookSnob", "BeachSnob"
    };

    // 情侣昵称集合（50对）
    public static final String[][] COUPLE_NICKNAMES = {
            {"SunShine", "MoonLight"}, {"StarBoy", "StarGirl"}, {"Mr.Adventure", "Mrs.Adventure"},
            {"CoffeeAddict", "TeaLover"}, {"BookWorm", "MovieBuff"}, {"BeachBum", "MountainClimber"},
            {"GamerPro", "MusicJunkie"}, {"Foodie", "Chef"}, {"TravelBug", "HomeBody"},
            {"ArtLover", "CraftyCreator"}, {"FitnessFreak", "YogaWarrior"}, {"DogPerson", "CatPerson"},
            {"CitySlicker", "CountryBumpkin"}, {"EarlyBird", "NightOwl"}, {"Introvert", "Extrovert"},
            {"SummerLover", "WinterWonder", "Sunflower", "Butterfly"}, {"Romeo", "Juliet"},
            {"PrinceCharming", "PrincessSparkle"}, {"Husbando", "Wifue"}, {"King", "Queen"},
            {"Bae", "Boo"}, {"Sweetheart", "Darling"}, {"Love", "Loved"}, {"Heart", "Soul"},
            {"Forever", "Always"}, {"Together", "Forever"}, {"PartnerInCrime", "CrimePartner"},
            {"MySun", "MyMoon"}, {"MyStar", "MySky"}, {"MyHeart", "MySoul"}, {"MyLife", "MyLove"},
            {"MyEverything", "MyWorld"}, {"MyAngel", "MyDevil"}, {"MyHero", "MyHeroine"},
            {"MyKnight", "MyPrincess"}, {"MyPrince", "MyQueen"}, {"MySunshine", "MyRainbow"},
            {"MyLight", "MyDarkness"}, {"MyHope", "MyFaith"}, {"MyDream", "MyReality"}
    };

    // 2025年流行词集合（每年更新）
    public static final String[] TRENDY_SUFFIXES = {
            "AIWhiz", "CryptoGuru", "MetaVoyager", "GreenWarrior", "SustainableSoul",
            "DigitalNomad", "RemoteRockstar", "MentalHealthAdvocate", "WellnessWarrior",
            "PlantBased", "ClimateChampion", "SocialMediaMaven", "ContentCreator", "InfluencerPro",
            "TechVisionary", "FutureThinker", "QuantumDreamer", "SpaceEnthusiast", "NeuralNinja",
            "RoboticsRockstar", "BlockchainBabe", "NFTArtist", "Web3Wizard", "VirtualVoyager",
            "AugmentedArtist", "CryptoCollector", "DeFiDiva", "DAOExpert", "TokenTitan",
            "AIArtist", "MachineLearningMaster", "DeepLearningDiva", "ComputerVisionChamp",
            "NLPWizard", "DataScienceSavant", "CloudGuru", "DevOpsDude", "CybersecurityQueen",
            "QuantumComputingQueen", "BiotechBrainiac", "NanotechNinja", "CleanEnergyCrusader",
            "ClimateTechPioneer", "SustainableStartup", "RegenerativeFarmer", "CircularEconomyChamp"
    };

    // 符号前缀/后缀集合（共100个，用于insertSymbolWithLengthControl方法）
    public static final String[] SYMBOL_ELEMENTS = {
            // 表情符号类（按类别分组）
            "✨", "🌟", "💫", "⭐️", "🌠", // 星星类
            "🔥", "💥", "⚡️", "💨", "🌪️", // 力量/速度类
            "🌸", "🌹", "🌼", "🌻", "💐", // 花卉类
            "🌈", "🌙", "☀️", "🌊", "🌌", // 自然类
            "🐾", "🦄", "🐉", "🐶", "🐱", // 动物类
            "👑", "💎", "🔮", "⚜️", "🔱", // 高贵/魔法类
            "❤️", "💔", "💕", "💖", "💘", // 情感类
            "🎮", "🎯", "🎸", "🎵", "🎬", // 兴趣类
            "👻", "💀", "👾", "🤖", "👽", // 幻想类
            "🚀", "🌍", "⚛️", "💡", "🔬", // 科技类
            "🎭", "🎨", "🎬", "🎤", "🎧", // 艺术类
            "🎤", "🎧", "🎼", "🎹", "🥁", // 音乐类
            "🎼", "🎵", "🎶", "🎙️", "🎚️", // 音乐类

            // 特殊字符类
            "_", "-", "~", "*", "·", "•", "✦", "✧", "✩", "✪",
            "❄️", "❇️", "❈", "❉", "❊", "❋", "❖", "❘", "❙", "❚",
            "═", "║", "╔", "╗", "╚", "╝", "╬", "╠", "╣", "╦", "╩",
            "▬", "▮", "▯", "◊", "◆", "◇", "◈", "◉", "◊", "○", "●",
            "◐", "◑", "◒", "◓", "◔", "◕", "☉", "☼", "☀", "☁", "☂",
            "☕", "☔", "☘", "☁", "☃", "☄", "☆", "☇", "☈", "☉", "☊",
            "☋", "☌", "☍", "☎", "☎", "☏", "☐", "☑", "☒",
            "☐", "☑", "☒", "▢", "▣", "▤", "▥", "▦", "▧", "▨", "▩",
            "▪", "▫", "▬", "▭", "▮", "▯", "▰", "▱", "▲", "△", "▴",
            "▵", "▿", "▾", "▂", "▃", "▄", "▅", "▆", "▇", "█", "▉",
            "▊", "▋", "▌", "▍", "▎", "▏", "▐", "░", "▒", "▓", "▔"
    };

    /**
     * 随机获取某领域的昵称
     *
     * @param category 领域类型（0-职业类，1-运动类，2-人文类，3-科技类，4-自然类，
     *                 5-生活类，6-二次元类，7-元宇宙类，8-Z世代类，9-人名类，
     *                 10-流行文化类，11-符号类，12-宠物生活类）
     * @return 随机昵称（长度≤16字符）
     */
    public static String getRandomNickname(int category) {
        String baseNick = superGetRandomNickname(category);
        return applyLengthControl(baseNick);
    }

    /**
     * 获取指定类型的昵称数组
     *
     * @param category 领域类型（0-职业类，1-运动类，2-人文类，3-科技类，4-自然类，
     *                 5-生活类，6-二次元类，7-元宇宙类，8-Z世代类，9-人名类，
     *                 10-流行文化类，11-符号类，12-宠物生活类）
     * @return 昵称数组
     */
    private static String superGetRandomNickname(int category) {
        String[] categoryArray = getCategoryArray(category);
        Random random = new Random();

        // 20%概率添加流行词后缀（带长度预判）
        if (random.nextInt(5) == 0 && category != 10 && category != 11) {
            String suffix = TRENDY_SUFFIXES[random.nextInt(TRENDY_SUFFIXES.length)];
            String baseNick = categoryArray[random.nextInt(categoryArray.length)];

            // 计算可用的后缀长度
            int maxSuffixLength = Math.max(0, 16 - baseNick.length());

            // 如果有空间添加后缀
            if (maxSuffixLength > 0) {
                // 安全截取后缀（确保不超过后缀实际长度）
                String truncatedSuffix = suffix.substring(0, Math.min(maxSuffixLength, suffix.length()));
                return baseNick + truncatedSuffix;
            }
        }

        return categoryArray[random.nextInt(categoryArray.length)];
    }

    /**
     * 获取对应领域的昵称数组
     */
    private static String[] getCategoryArray(int category) {
        switch (category) {
            case 0:
                return PROFESSIONAL_NICKNAMES;
            case 1:
                return SPORTS_NICKNAMES;
            case 2:
                return HUMANITIES_NICKNAMES;
            case 3:
                return TECH_NICKNAMES;
            case 4:
                return NATURE_NICKNAMES;
            case 5:
                return LIFE_NICKNAMES;
            case 6:
                return ANIME_NICKNAMES;
            case 7:
                return METAVERSE_NICKNAMES;
            case 8:
                return GEN_Z_NICKNAMES;
            case 9:
                return PERSON_NAME_NICKNAMES;
            case 10:
                return POP_CULTURE_NICKNAMES;
            case 11:
                return SYMBOL_NICKNAMES;
            case 12:
                return PET_LIFE_NICKNAMES;
            default:
                throw new IllegalArgumentException("无效的领域类型: " + category);
        }
    }

    /**
     * 随机获取所有领域中的昵称
     *
     * @return 随机昵称（长度≤16字符）
     */
    public static String getRandomNickname() {
        int category = new Random().nextInt(13);
        String baseNick = getRandomNickname(category);

        // 30%概率应用符号变形（带长度保护）
        if (new Random().nextInt(10) < 3 && category != 11) {
            String symbolNick = insertSymbolWithLengthControl(baseNick);
            return symbolNick.length() <= 16 ? symbolNick : baseNick;
        }

        return baseNick;
    }

    /**
     * 随机获取指定数量的不重复昵称
     *
     * @param count 需要获取的昵称数量
     * @return 随机昵称列表（每个长度≤16字符）
     */
    public static List<String> getRandomNicknames(int count) {
        int totalNicknames = 1500; // 总昵称数量
        if (count < 1) {
            throw new IllegalArgumentException("请求数量必须大于0");
        }
        if (count > totalNicknames) {
            throw new IllegalArgumentException("请求数量不能超过总昵称数量(" + totalNicknames + ")");
        }

        List<String> result = new ArrayList<>(count);
        Random random = new Random();

        // 使用蓄水池抽样算法确保不重复
        for (int i = 0; i < count; i++) {
            int category = random.nextInt(13);
            String nickname = getRandomNickname(category);

            int doCnt = 0;
            // 确保不重复
            while (result.contains(nickname)) {
                nickname = getRandomNickname(category);
                doCnt++;
                if (doCnt > 10000) {
                    break;
                }
            }

            result.add(nickname);
        }

        return result;
    }

    /**
     * 随机获取情侣昵称对
     *
     * @return 包含两个昵称的数组（每个长度≤16字符）
     */
    public static String[] getCoupleNicknames() {
        int index = new Random().nextInt(COUPLE_NICKNAMES.length);
        String[] couple = COUPLE_NICKNAMES[index];
        return new String[]{
                applyLengthControl(couple[0]),
                applyLengthControl(couple[1])
        };
    }

    /**
     * 随机获取符号
     *
     * @param random
     * @return
     */
    private static String getRandomSymbol(Random random) {
        return SYMBOL_ELEMENTS[random.nextInt(SYMBOL_ELEMENTS.length)];
    }

    /**
     * 带长度控制的符号插入
     */
    /*private static String insertSymbolWithLengthControl(String base) {
        if (base.length() >= 16) return base.substring(0, 16);

        StringBuilder sb = new StringBuilder(base);
        Random random = new Random();
        int maxSymbols = 16 - base.length();

        // 符号替换（不超过剩余长度）
        int replaceCount = Math.min(3, maxSymbols / 2);
        for (int i = 0; i < replaceCount; i++) {
            applySingleSymbolReplacement(sb, random);
        }

        // 前缀符号（不超过剩余长度）
        if (maxSymbols > 0 && random.nextBoolean()) {
            sb.insert(0, getRandomSymbol(random));
        }

        // 后缀符号（不超过剩余长度）
        if (sb.length() < 16 && random.nextBoolean()) {
            sb.append(getRandomSymbol(random));
        }

        // 中间符号（不超过剩余长度）
        if (sb.length() < 16 && sb.length() > 3) {
            sb.insert(1 + random.nextInt(sb.length() - 2), getRandomSymbol(random));
        }

        // 最终截断
        return sb.length() > 16 ? sb.substring(0, 16) : sb.toString();
    }*/

    /**
     * 应用单个符号替换
     */
    private static void applySingleSymbolReplacement(StringBuilder sb, Random random) {
        char[][] replacements = {
                {'a', '@'}, {'e', '3'}, {'i', '1'}, {'o', '0'}, {'s', '$'},
                {'t', '7'}, {'A', '4'}, {'E', '3'}, {'I', '1'}, {'O', '0'},
                {'S', '$'}, {'T', '7'}
        };

        int pos = random.nextInt(sb.length());
        char c = sb.charAt(pos);

        for (char[] replacement : replacements) {
            if (replacement[0] == c) {
                sb.setCharAt(pos, replacement[1]);
                break;
            }
        }
    }

    /**
     * 通用长度控制方法
     */
    private static String applyLengthControl(String nickname) {
        return nickname.length() <= 16 ? nickname : nickname.substring(0, 16);
    }

    /**
     * 符号插入（带长度控制）
     *
     * @param base
     * @return
     */
    private static String insertSymbolWithLengthControl(String base) {
        if (base.length() >= 16) return base;

        StringBuilder sb = new StringBuilder(base);
        Random random = new Random();
        int maxSymbols = 16 - base.length();

        // 符号替换（优先使用单字符符号）
        if (maxSymbols > 0) {
            int replaceCount = Math.min(2, maxSymbols);
            for (int i = 0; i < replaceCount; i++) {
                int pos = random.nextInt(sb.length());
                char c = sb.charAt(pos);

                // 数字/字母替换表（单字符符号）
                if (c == 'a' || c == 'A') sb.setCharAt(pos, '@');
                else if (c == 'e' || c == 'E') sb.setCharAt(pos, '3');
                else if (c == 'i' || c == 'I') sb.setCharAt(pos, '1');
                else if (c == 'o' || c == 'O') sb.setCharAt(pos, '0');
                else if (c == 's' || c == 'S') sb.setCharAt(pos, '$');
                else if (c == 't' || c == 'T') sb.setCharAt(pos, '7');
            }
        }

        // 前缀符号（优先使用单字符）
        if (maxSymbols > sb.length() && random.nextBoolean()) {
            String prefix = getRandomSymbol(random);
            sb.insert(0, prefix);
        }

        // 后缀符号
        if (sb.length() < 16 && random.nextBoolean()) {
            String suffix = getRandomSymbol(random);
            sb.append(suffix);
        }

        return sb.toString();
    }

    /**
     * 主方法：测试昵称生成功能
     */
    public static void main(String[] args) {
        System.out.println("===== 测试随机生成昵称 =====");

//        // 测试单个随机昵称生成
//        System.out.println("随机单个昵称: " + getRandomNickname());
//
//        // 测试各领域随机昵称
//        System.out.println("\n=== 指定领域随机昵称 ===");
//        for (int i = 0; i < 13; i++) {
//            System.out.printf("%-12s: %s\n", getCategoryName(i), getRandomNickname(i));
//        }

        // 测试批量随机昵称生成（每5个换行）
        System.out.println("\n=== 批量随机昵称（每5个换行）===");
        List<String> nicknames = getRandomNicknames(500);
        for (int i = 0; i < nicknames.size(); i++) {
            System.out.printf("%-20s", nicknames.get(i));
            if ((i + 1) % 5 == 0) {
                System.out.println();
            }
        }

        // 测试情侣昵称生成
//        System.out.println("\n\n=== 情侣昵称测试 ===");
//        String[] couple = getCoupleNicknames();
//        System.out.printf("情侣昵称对: %s & %s\n", couple[0], couple[1]);
//
//        // 测试符号插入功能
//        System.out.println("\n=== 符号变形测试 ===");
//        System.out.println("原始: AlexPro → 变形: " + insertSymbol("AlexPro"));
//        System.out.println("原始: EmmaNinja → 变形: " + insertSymbol("EmmaNinja"));
//
//        // 测试边界条件
//        System.out.println("\n=== 边界条件测试 ===");
//        try {
//            getRandomNicknames(0);
//        } catch (IllegalArgumentException e) {
//            System.out.println("预期异常: " + e.getMessage());
//        }
//
//        try {
//            getRandomNicknames(2000);
//        } catch (IllegalArgumentException e) {
//            System.out.println("预期异常: " + e.getMessage());
//        }
    }

    /**
     * 获取领域名称（辅助方法，用于main测试）
     */
    private static String getCategoryName(int category) {
        String[] names = {
                "职业类", "运动类", "人文类", "科技类", "自然类",
                "生活类", "二次元类", "元宇宙类", "Z世代类", "人名类",
                "流行文化类", "符号类", "宠物生活类"
        };
        return names[category];
    }
}